Description:
Brief description of the course:
1. Mathematics: boolean algebra, number theory, modular algebra, abstract algebra
2. Historical cryptography: Caesar cipher, Vigenere cipher, transposition cipher, Affine cipher, main crypto-analytic techniques
3. Theory of unbreakable (information-theoretically secure) ciphers: one-time pad, perfect secrecy, elements of probability theory
4. Symmetric cryptography: stream ciphers, block ciphers, modes of operation
5. Computability and Computational Complexity: Turing machine, computability, big O notation, Search-Decision problems
6. The problem of key establishment: Public Key Cryptography, Diffie-Hellman key exchange, Man in the middle attack
7. Limited Adversaries and Security: one-way functions, bit security, adversary models, security definitions
8. The RSA cryptosystem: Description, properties, and security
9. RSA Attacks and Implementation Failures: Description of several protocol weaknesses if the RSA is used in improper ways
10. Probabilistic Encryption. ElGamal-type Cryptosystems: Probabilistic vs Deterministic Encryption, IND-CPA, IND-CCA
11. Digital signatures and Hash functions: Definitions and security properties
12. Identification schemes and Zero Knowledge proofs.
13. Public Key infrastructure: certificates, ID-Card, Smart-ID, TLS
14. Introduction to Post-Quantum and Esoteric Cryptography
Learning outcomes:
After completing this course, the student:
- accurately uses standard cryptographic notation and terminology;
- accurately recalls and explains cryptographic definitions from the topics covered during the course;
- explains and analyses the most important symmetric cryptography and public key cryptography schemes;
- solves practical problems that illustrate the usage of cryptographic primitives studied during the course;
- identifies the security problems that arise in case of incorrect instantiation of cryptographic primitives studied during the course;
- applies basic security definitions to analyse cryptographic primitives studied during the course;
- identifies cryptographic algorithms that are suitable to solve simple security goals.